library(datasets)
library(Hmisc)

Attaching package: ‘Hmisc’

The following object is masked from ‘package:e1071’:

    impute

The following objects are masked from ‘package:base’:

    format.pval, units
library(grid)
library(ggplot2)
library(moments)

Attaching package: ‘moments’

The following objects are masked from ‘package:e1071’:

    kurtosis, moment, skewness
library(e1071)
df <- read.csv('stock_details_5_years.csv')

df_googl <- df[df$Company == "GOOGL", ]
df_googl
NA
NA
ts.plot(df_googl$Open, xlab="Time", ylab = 'Googl Opening Prices')

#df_googl$Open_lag1 <- Lag(df_googl$Open,1)
#df_googl$Open_lead1 <- Lag(df_googl$Open,-1)
#df_googl$Open_change <- (df_googl$Open_lead1 - df_googl$Open_lag1)/2
Open_diff <- diff(df_googl$Open, lag = 1)

# Correct way to plot Open_diff
plot(Open_diff, type='l', xlab = "Time in 10 min increments", 
     ylab ="Change in Opening Price", 
     main = "Average Change in Open Price Over Time")


diff_open <- diff(df_googl$Open, lag = 1, differences = 1)

mean_diff <- mean(diff_open, na.rm = TRUE)

plot(density(diff_open, na.rm = TRUE), main = "Density of First Differences in Open Price", 
     xlab = "First Differences", ylab = "Density")

abline(v = mean_diff, col = "red", lwd = 2, lty = 2)

NA
NA

# Compute first differences
diff_open <- diff(df_googl$Open, lag = 1, differences = 1)

# Calculate statistics
mean_diff <- mean(diff_open, na.rm = TRUE)
sd_diff <- sd(diff_open, na.rm = TRUE)
min_diff <- min(diff_open, na.rm = TRUE)
max_diff <- max(diff_open, na.rm = TRUE)
skewness_diff <- skewness(diff_open, na.rm = TRUE)
kurtosis_diff <- kurtosis(diff_open, na.rm = TRUE)
quantiles_diff <- quantile(diff_open, probs = c(0.25, 0.5, 0.75), na.rm = TRUE)

# Print results
list(
  Mean = mean_diff,
  Std_Dev = sd_diff,
  Min = min_diff,
  Max = max_diff,
  Skewness = skewness_diff,
  Kurtosis = kurtosis_diff,
  Quantiles = quantiles_diff
)
$Mean
[1] 0.06634328

$Std_Dev
[1] 1.916098

$Min
[1] -9.669998

$Max
[1] 13.6555

$Skewness
[1] 0.1237204

$Kurtosis
[1] 4.495004

$Quantiles
       25%        50%        75% 
-0.8550034  0.1090012  1.0299988 

Around day 800 something happens, after which the data is more spread out than in the beginning.

library(lubridate)

df_googl$Date2 <- ymd_hms(df_googl$Date)  # Convert to POSIXct

ggplot(data=df_googl,aes(x=Date2,y=Open))+
  geom_segment(aes(xend=Date2,yend=Open+Open_diff),arrow=arrow(length=unit(.2,"cm")))+
  stat_density2d(aes(colour=..level..))+
    labs(
    title = "GOOGL Opening Stock - 2D Vector Density Plot",
    x = "Date",
    y = "Opening Price",
    colour = "Density Level"
  )

## TEST DATA

Open_diff2 <- append(Open_diff, 0)
length(Open_diff2)
[1] 1258
openLM <- lm(Open_diff2~Open, data=df_googl)
summary(openLM)

Call:
lm(formula = Open_diff2 ~ Open, data = df_googl)

Residuals:
    Min      1Q  Median      3Q     Max 
-9.6491 -0.9218  0.0243  0.9474 13.6759 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)
(Intercept)  0.271651   0.183060   1.484    0.138
Open        -0.002123   0.001808  -1.174    0.241

Residual standard error: 1.915 on 1256 degrees of freedom
Multiple R-squared:  0.001096,  Adjusted R-squared:  0.0003009 
F-statistic: 1.378 on 1 and 1256 DF,  p-value: 0.2406

LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKCmBgYHtyfQpsaWJyYXJ5KGRhdGFzZXRzKQpsaWJyYXJ5KEhtaXNjKQpsaWJyYXJ5KGdyaWQpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShtb21lbnRzKQpsaWJyYXJ5KGUxMDcxKQpgYGAKCgpgYGB7cn0KZGYgPC0gcmVhZC5jc3YoJ3N0b2NrX2RldGFpbHNfNV95ZWFycy5jc3YnKQoKZGZfZ29vZ2wgPC0gZGZbZGYkQ29tcGFueSA9PSAiR09PR0wiLCBdCmRmX2dvb2dsCgoKYGBgCgpgYGB7cn0KdHMucGxvdChkZl9nb29nbCRPcGVuLCB4bGFiPSJUaW1lIiwgeWxhYiA9ICdHb29nbCBPcGVuaW5nIFByaWNlcycpCmBgYAoKCmBgYHtyfQoKT3Blbl9kaWZmIDwtIGRpZmYoZGZfZ29vZ2wkT3BlbiwgbGFnID0gMSkKCnBsb3QoT3Blbl9kaWZmLCB0eXBlPSdsJywgeGxhYiA9ICJUaW1lIGluIDEwIG1pbiBpbmNyZW1lbnRzIiwgCiAgICAgeWxhYiA9IkNoYW5nZSBpbiBPcGVuaW5nIFByaWNlIiwgCiAgICAgbWFpbiA9ICJBdmVyYWdlIENoYW5nZSBpbiBPcGVuIFByaWNlIE92ZXIgVGltZSIpCgpgYGAKCmBgYHtyfQoKZGlmZl9vcGVuIDwtIGRpZmYoZGZfZ29vZ2wkT3BlbiwgbGFnID0gMSwgZGlmZmVyZW5jZXMgPSAxKQoKbWVhbl9kaWZmIDwtIG1lYW4oZGlmZl9vcGVuLCBuYS5ybSA9IFRSVUUpCgpwbG90KGRlbnNpdHkoZGlmZl9vcGVuLCBuYS5ybSA9IFRSVUUpLCBtYWluID0gIkRlbnNpdHkgb2YgRmlyc3QgRGlmZmVyZW5jZXMgaW4gT3BlbiBQcmljZSIsIAogICAgIHhsYWIgPSAiRmlyc3QgRGlmZmVyZW5jZXMiLCB5bGFiID0gIkRlbnNpdHkiKQoKYWJsaW5lKHYgPSBtZWFuX2RpZmYsIGNvbCA9ICJyZWQiLCBsd2QgPSAyLCBsdHkgPSAyKQoKCmBgYApgYGB7cn0KCiMgQ29tcHV0ZSBmaXJzdCBkaWZmZXJlbmNlcwpkaWZmX29wZW4gPC0gZGlmZihkZl9nb29nbCRPcGVuLCBsYWcgPSAxLCBkaWZmZXJlbmNlcyA9IDEpCgojIENhbGN1bGF0ZSBzdGF0aXN0aWNzCm1lYW5fZGlmZiA8LSBtZWFuKGRpZmZfb3BlbiwgbmEucm0gPSBUUlVFKQpzZF9kaWZmIDwtIHNkKGRpZmZfb3BlbiwgbmEucm0gPSBUUlVFKQptaW5fZGlmZiA8LSBtaW4oZGlmZl9vcGVuLCBuYS5ybSA9IFRSVUUpCm1heF9kaWZmIDwtIG1heChkaWZmX29wZW4sIG5hLnJtID0gVFJVRSkKc2tld25lc3NfZGlmZiA8LSBza2V3bmVzcyhkaWZmX29wZW4sIG5hLnJtID0gVFJVRSkKa3VydG9zaXNfZGlmZiA8LSBrdXJ0b3NpcyhkaWZmX29wZW4sIG5hLnJtID0gVFJVRSkKcXVhbnRpbGVzX2RpZmYgPC0gcXVhbnRpbGUoZGlmZl9vcGVuLCBwcm9icyA9IGMoMC4yNSwgMC41LCAwLjc1KSwgbmEucm0gPSBUUlVFKQoKIyBQcmludCByZXN1bHRzCmxpc3QoCiAgTWVhbiA9IG1lYW5fZGlmZiwKICBTdGRfRGV2ID0gc2RfZGlmZiwKICBNaW4gPSBtaW5fZGlmZiwKICBNYXggPSBtYXhfZGlmZiwKICBTa2V3bmVzcyA9IHNrZXduZXNzX2RpZmYsCiAgS3VydG9zaXMgPSBrdXJ0b3Npc19kaWZmLAogIFF1YW50aWxlcyA9IHF1YW50aWxlc19kaWZmCikKYGBgCgoKCkFyb3VuZCBkYXkgODAwIHNvbWV0aGluZyBoYXBwZW5zLCBhZnRlciB3aGljaCB0aGUgZGF0YSBpcyBtb3JlIHNwcmVhZCBvdXQgdGhhbiBpbiB0aGUgYmVnaW5uaW5nLgoKYGBge3J9CmxpYnJhcnkobHVicmlkYXRlKQoKZGZfZ29vZ2wkRGF0ZTIgPC0geW1kX2htcyhkZl9nb29nbCREYXRlKSAgIyBDb252ZXJ0IHRvIFBPU0lYY3QKCmdncGxvdChkYXRhPWRmX2dvb2dsLGFlcyh4PURhdGUyLHk9T3BlbikpKwogIGdlb21fc2VnbWVudChhZXMoeGVuZD1EYXRlMix5ZW5kPU9wZW4rT3Blbl9kaWZmKSxhcnJvdz1hcnJvdyhsZW5ndGg9dW5pdCguMiwiY20iKSkpKwogIHN0YXRfZGVuc2l0eTJkKGFlcyhjb2xvdXI9Li5sZXZlbC4uKSkrCiAgICBsYWJzKAogICAgdGl0bGUgPSAiR09PR0wgT3BlbmluZyBTdG9jayAtIDJEIFZlY3RvciBEZW5zaXR5IFBsb3QiLAogICAgeCA9ICJEYXRlIiwKICAgIHkgPSAiT3BlbmluZyBQcmljZSIsCiAgICBjb2xvdXIgPSAiRGVuc2l0eSBMZXZlbCIKICApCmBgYAoKYGBge3J9CiMjIFRFU1QgREFUQQoKT3Blbl9kaWZmMiA8LSBhcHBlbmQoT3Blbl9kaWZmLCAwKQpsZW5ndGgoT3Blbl9kaWZmMikKCm9wZW5MTSA8LSBsbShPcGVuX2RpZmYyfk9wZW4sIGRhdGE9ZGZfZ29vZ2wpCnN1bW1hcnkob3BlbkxNKQpgYGAKCmBgYHtyfQpwbG90KG9wZW5MTSkKYGBgCgoKCg==